The present disclosure relates generally to computing systems, and more particularly to dynamic caching.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option is a computing system. Computing systems may vary in complexity from a single processor operating in relative isolation to large networks of interconnected processors. The interconnected processors may be in close proximity to each other or separated by great distances both physically and as distance is measured in computer networking terms. The interconnected processors may also work together in a closely cooperative fashion or in a loose weakly coupled fashion. Because technology and processing needs and requirements may vary between different applications, the structure and arrangement of the computing system may vary significantly between two different computing systems. The flexibility in computing systems allows them to be configured for both specific users, specific uses, or for more general purposes. Computing system may also include a variety of hardware and software components that may be configured to process, store, and communicate information based on the needs of the users and the applications.
Additionally, some examples of computing systems include non-transient, tangible machine-readable media that include executable code that when run by one or more processors, may cause the one or more processors to perform the steps of methods described herein. Some common forms of machine readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, and/or any other medium from which a processor or computer is adapted to read.
Computing systems generally include one or more types of storage such as RAM, disk drives, solid-state drives, and the like. The storage may be used for executable code and/or data that may be retrieved, manipulated, or stored by the executable code. Different types of storage vary in size, speed, and cost. Typically, larger memories and faster memories are more expensive, often considerably so. Consequently, computing systems may have many different varieties of storage arranged in a cooperative and/or hierarchical fashion. In addition, as computing systems become more and more distributed, the distances both physically and in computer networking terms between the sources of data and the consumers of that data may be quite large. This may add complexity to the data retrieval process. It may additionally increase the time required to retrieve data from a distant system as well as the relative cost as more and more processors and/or subsystems may be required to handle the data before it can be delivered. Various strategies are often used to improve the data retrieval process. One such strategy is the use of caching. In caching a faster and/or more local storage unit (i.e., a cache) may be placed between the source of stored information and the consumer of that information. The cache may contain copies of some of the stored information and the consumer of that information may access that information from the copy in the cache rather than from the actual source of the stored information.
Accordingly, it would be desirable to provide improved caching systems and methods. It would also be desirable to provide improved caching systems and methods that may adapt dynamically to the usage patterns of the caching system.